
package br.com.fatecpg.web.chat;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.google.api.translate.Language;


public class ChatServlet extends HttpServlet {
    public static ArrayList<Sala>salas = null;
    public String charset = "utf-8";

    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset="+charset);

        PrintWriter out = response.getWriter();
        try {
          if(salas == null){
              salas = new ArrayList<Sala>();
              salas.add(new Sala());
              salas.add(new Sala());
              salas.add(new Sala());

          }
          HttpSession sessão = request.getSession(true);

          if (request.getParameter("nome") !=  null){
              sessão.setAttribute("nome", request.getParameter("nome"));
              sessão.setAttribute("lingua", request.getParameter("lingua"));
          }

          if(request.getParameter("sala") != null){
              Sala salaEscolhida = salas.get(Integer.parseInt(request.getParameter("sala")));
              sessão.setAttribute("sala", salaEscolhida);



          }

          if(request.getParameter("sair") != null){
              sessão.removeAttribute("sala");

          }
          if(request.getParameter("limpar") != null){
              sessão.removeAttribute("nome");

          }

          if(request.getParameter("mensagem") != null){
              Mensagem mensagem = new Mensagem();
              mensagem.nome = (String) sessão.getAttribute("nome");
              mensagem.dataHora = new Date().toString();
              mensagem.mensagem = request.getParameter("mensagem");
              Sala salaEscolhida = (Sala) sessão.getAttribute("sala");
              salaEscolhida.mensagens.add(mensagem);

              
              if( sessão.getAttribute("lingua").equals("PORTUGUESE")){
                  charset = "ISO-8859-1";
              } else {
                  charset = "utf-8";

              }
          }

            out.println("<html>");
            out.println("<head>");
            out.println("<link rel='stylesheet' type='text/css'href='"+ request.getContextPath() +"/estilo.css'>");
            out.println("</head>");
            out.println("<body><div class='full'>");
            if(sessão.getAttribute("sala") ==null){
                out.println("<h1>Escolha uma das Salas de Bate-Papo</h1>");
                out.println("<div><h2  class='sala'><a  href='?sala=0'>Sala 01</a></h2>");
                out.println("<h2 class='sala'><a href='?sala=1'>Sala 02</a></h2>");
                out.println("<h2 class='sala'><a href='?sala=2'>Sala 03</a></h2></div>");
                out.println("<a href='?limpar'>Limpar</a>");

                
            }else{
                if(sessão.getAttribute("nome") == null){
                out.println("<form name='entrada' action='' method='get'>");
                out.println("Identifique-se: <input type='text' name='nome'/>");
                out.println("<select name='lingua'>");
                out.println("<option value='ENGLISH'>Inglês</option>");
                out.println("<option value='SPANISH'>Espanhol</option>");
                out.println("<option value='PORTUGUESE'>Português</option>");
                out.println("<option value='JAPANESE'>Japonês</option>");
                out.println("<option value='RUSSIAN'>Russo</option>");
                out.println("<option value='CHINESE'>Chinês</option>");
                out.println("<option value='ITALIAN'>Italiano</option>");
                out.println("<option value='GERMAN'>Alemão</option>");

                out.println("</select>");
                out.println("<input type='Submit' value='Entrar na Sala'/>");
                out.println("</form>");
                }else{

                    Sala salaEscolhida = (Sala) sessão.getAttribute("sala");
                    out.println("<form nome='entrada' action='' method='get'>");
                    out.println("Mensagem:<input type='text' name='mensagem'/>");
                    out.println("<input type='Submit' value='Enviar Mensagem'/>");
                    out.println("</form>");
                    out.println("<div class='fb1'><h1>Mensagem da Sala " +(salas.indexOf(salaEscolhida)+1)+"</h1></div>");
                    for(Mensagem m: salaEscolhida.mensagens){

                        com.google.api.translate.Translate.setHttpReferrer("http://www.gilderlanbraz.net");
                        
                        String traduzido = com.google.api.translate.Translate.execute(m.mensagem, Language.AUTO_DETECT, Language.valueOf((String)sessão.getAttribute("lingua")));
                      out.println("<div class='fb2'><h4>" + m.nome + ", às " +  m.dataHora.substring(11,19) + ":</h4></div>");
                       //out.println("<blockquote><h2>" + com.google.api.translate.Translate.translate(m.mensagem, Language.PORTUGUESE, Language.ENGLISH).toString() + "</h2></blockquote>");
                                               out.println("<div class='fb3'><blockquote class='classe'><h2>"+ traduzido + "</h2></blockquote></div>"); }
                    

                    out.println("<h2><a href='?sair'>Sair da Sala</a></h2>");
                }
            }
            out.println("</div></body>");
            out.println("</html>");
        }catch (Exception e){
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ChatServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println(e.getMessage());
            out.println("</body>");
            out.println("</html>");
        }finally{
            out.close();

        }

    } 

 

}
